package main.java.sq;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Iterator;
import java.util.List;



public class CiudadEspacial extends Selecciones implements Accion {
	private int idJugador;
	private boolean amarilla;
	private boolean roja;
	private boolean valla;
	public CiudadEspacial(){
		idJugador=-1;
		valla=false;
	}
	public void ejecutarAccion() {
		System.out.println("Ciudad Espacial\r\n");
		Partida partida=Partida.getPartida();
		Jugador jugadoractual=partida.getJugadorPorId(idJugador);
		List<Minerales> listaMinerales=jugadoractual.getHangar().mineralesRepetidos(4);
		if(listaMinerales.size()!=0){
		Minerales mineralseleccionado=seleccionaMineral(1, false, listaMinerales);
		for(int i=0;i<5;i++){
			jugadoractual.getHangar().eliminarMinerales(mineralseleccionado);
		}
		jugadoractual.addPuntoVictoria();
		System.out.println("El jugador "+jugadoractual.getId()+" ha vendido 5 " +mineralseleccionado+" y ahora tiene "+jugadoractual.getPuntoVictoria()
				+" punto/puntos de victoria\r\n");
		}

	}
	
	@Override
	public int getIdJugador() {
		return idJugador;
	}
	@Override
	public void setIdJugador(int idJugador) {
		this.idJugador=idJugador;
	}
	public String toString(){
		return "CiudadEspacial";
	}
	@Override
	public boolean getAmarilla() {
		return this.amarilla;
	}

	@Override
	public boolean getRoja() {
		return this.roja;
	}

	@Override
	public boolean getTieneConsul() {
		return this.getIdJugador()>0;
	}

	@Override
	public void setAmarilla(boolean amarilla) {
		this.amarilla = amarilla;
	}

	@Override
	public void setRoja(boolean roja) {
		this.roja = roja;
	}

	@Override
	public boolean esRealizable() {
		boolean realizable=false;
		boolean mercado=false;
		boolean cincoMinerales=false;
		Partida partida=Partida.getPartida();
		Jugador jugadorAct=partida.getJugadorPorId(idJugador);
		List<Planeta> planetasControlados=jugadorAct.getPlanetasControlados();
		Iterator<Planeta> itPlanetas=planetasControlados.iterator();
		while(itPlanetas.hasNext()){
			if(itPlanetas.next().isMercado()){
				mercado=true;
				break;
			}
		}
		Hangar hangar=jugadorAct.getHangar();
		List<Minerales> cincoMin=hangar.mineralesRepetidos(5);
		if(cincoMin.size()>0){
			cincoMinerales=true;
		}
		if(cincoMinerales && mercado){
			realizable=true;
		}
		
		return realizable;
	}

		
			
			/**
			 */
			public Planeta seleccionaSector(List<Planeta> lp){
			return super.seleccionaSector(lp);
					 }

			
			/**
			 */
			@Deprecated
			public Minerales seleccionaMinerales(List<Minerales> minerales){
				//NO USAR; USAR EL DE SELECCIONES
				System.out.println("Selecciona el mineral que quieras vendar");
				for(int i=0; i<minerales.size();i++){
					System.out.println(i+")"+minerales.get(i));
				}
				
				int numrespuesta=-1;
				while(numrespuesta==-1){
					BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
					try {
						String linea = br.readLine();
						numrespuesta = Integer.parseInt(linea);
					} catch (Exception e) {	}
				}
				
				return minerales.get(numrespuesta);
			}
			@Override
			public boolean getValla() {
				return valla;
			}
			@Override
			public void setValla(boolean valla) {
				this.valla=valla;
				
			}
			

}
